package com.Stream;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.function.IntFunction;
import java.util.stream.Collectors;

/**
 * 目标：将Stream流的数据收集到集合或者数组中去
 * 1.Stream流的数据收集到List集合
 * 2.Stream流的数据收集到Set集合
 * 3.Stream流的数据收集到数组
 */

public class StreamDemo4 {
    public static void main(String[] args) {
        List<String> list=new ArrayList<>();
        Collections.addAll(list,"张无忌","李元芳","张三丰","张毅","张三丰");
        /**
         * 1.将姓张的人拿出来放到一个List集合中去
         */
        List<String> zhang = list.stream().filter(s -> s.startsWith("张")).collect(Collectors.toList());
        System.out.println(zhang);
        //[张无忌, 张三丰, 张毅, 张三丰]

        /**
         * 2.将姓李的人拿出来放到一个Set集合中去
         */
        Set<String> collect = list.stream().filter(s->s.startsWith("李")).collect(Collectors.toSet());
        System.out.println(collect);
        //[李元芳]


        /**
         * 3.将姓张的人拿出来放到一个数组中去
         * 调用的toArray方法是转为Object数组
         * 也可以转为String数组
         */
        Object[] 张s = list.stream().filter(s -> s.startsWith("张")).toArray();
        //流只能使用一次，关闭后就不能在使用
        String[] strings = list.stream().filter(s -> s.startsWith("张")).toArray(String[]::new);


    }
}
